<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script type="text/javascript">
    class Person {
      constructor(name, age) {
        this.name = name
        this.age = age
      }

      speak() {
        //speak方法放在了类的原型对象上，供实例使用
        //通过Person实例调用speak时，speak中的this就是Person实例
        console.log(this);
      }
    }

    const p1 = new Person('tom', 18)
    p1.speak()//通过实例调用speak方法
    const x = p1.speak
    x()  //undefined

    /*
        1.类中的方法在局部开启了严格模式
        2.执行const x = p1.speak为方法添加了一个引用x，当x调用函数speak时因为严格模式，undefined
    */
  </script>
</body>

</html>